package com.itkaien.javaeebased.demo05;

import org.junit.Test;

import java.io.*;

public class fileTest {


    @Test
    public void test() {

        File file = new File("D:\\software\\JAVACODE\\ruoyipro\\code\\codegen-\\a.txt");
        long freeSpace = file.getFreeSpace();
        long totalSpace = file.getTotalSpace();
        long length = file.length();
        File[] roots = File.listRoots();
        for (int i = 0; i < roots.length; i++) {
            System.out.println(roots[i]);
        }
    }

    @Test
    public void test1() throws IOException {
        FileOutputStream fileOutputStream = new FileOutputStream("a.txt");
        fileOutputStream.write(97);
        fileOutputStream.hashCode();
    }


    @Test
    public void test2() throws IOException {
        FileInputStream fileInputStream = new FileInputStream("a.txt");

        int read = fileInputStream.read();
        while (read != -1) {
            System.out.println(read);
            read = fileInputStream.read();
        }
    }

    /**
     * 字符集 GBK 汉字三个字节 英文一个字节 因为英文只有26个字母 加上标点符号一个字节标识 2的8次方够用
     * 汉字不够用 所以使用两个字节
     *
     * 在unicode中 UTf编码 汉语三个字节 英文一个字节 这里三个字节是因为所有的亚洲
     * 语言的文字都在这里标识，所以两个字节不够用
     */

    /**
     *     字符流和字节流的区别   计算机底层都是字节流存储与传输
     *     实际上字符流就是 拿着字符集进行对比处理一次读取几个字节
     *
     *     字符流的的 fileReader 读取 相当于读取文本文件 如果读取时候二进制为 0开头肯定是英文 英文读取一个字节相当于是一个字符 如果是1开通是中文
     *     中文直接读取三个字节 相当于是一个字符
     */

    @Test
    public void test3() throws IOException {

        FileReader fileReader = new FileReader("a.txt");

        int read = fileReader.read();

        while (read != -1) {

            System.out.println(read);
            read = fileReader.read();
        }
    }

    /**
     * 转换流
     *
     * 转换流可以将字节流转换为字符流 读取的时候把文件中的字节数据 可以将基本的字节流转换为字符流
     *
     * 也可以将写出的时候的字符流转为字节流写入到文件中
     */

    @Test
    public void test4() throws IOException {

        InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("a.txt"),"GBK");


        int read = inputStreamReader.read();

        while (read != -1) {

            System.out.println(read);
            read = inputStreamReader.read();
        }
    }



}
